package com.explorx.sns.puma.im.core.chat;

import com.explorx.sns.puma.im.core.chat.consts.GroupMemberRoleEnum;
import com.explorx.sns.puma.im.core.chat.model.*;
import com.explorx.sns.puma.im.core.common.exceptions.BizException;

import java.util.List;

public interface GroupManager {

    UserConvBase createGroup(CreateGroupDto createGroupDto) throws BizException;

    boolean joinGroup(JoinGroupDto joinGroupDto, GroupMemberRoleEnum roleEnum) throws BizException;

    void leaveGroup(LeaveGroupDto leaveGroupDto) throws BizException;

    void dismissGroup(DismissGroup dismissGroup) throws BizException;

    List<GroupMemberBo> getGroupMembers(Long userId, Long groupId) throws BizException;

    GroupBaseInfo getGroupBaseInfo(Long userId, Long groupId);

    boolean editGroupAttribute(EditGroupAttribute editGroupAttribute) throws BizException;

    List<GroupBaseInfo> getGroupRecommend(Long uid);

    List<GroupBaseInfo> queryUserGroups(Long uid);
}
